草庐IT

python - __init__ 作为构造函数?

全部标签

go - 如何将 interface{} 作为特定结构传递给函数?

我正在尝试让一个通用例程处理特定组件之间的消息。其中一部分涉及读取字节数组并使用json.Marshal和json.Unmarshal以及调用回调。我正在尝试将接口(interface)传递给需要特定结构的函数,但我不知道目标结构的类型。在下面的代码中,函数r()是如何调用函数cb()并传入正确数据的?packagemainimport("encoding/json""fmt""reflect")typeBottomstruct{Foostring}funccb(b*Bottom){fmt.Println("5.",b)}funcr(tinterface{},buf[]byte){_=

go - 通过给键从 map[string]interface{} 调用函数

我希望能够将函数名称传递给gin.Engine路由处理程序。我有以下代码;//statusservicetypeStatusServicestruct{App*gin.Engine}func(s*StatusService)Ping(ctx*gin.Context){ctx.JSON(200,gin.H{"message":"pong",})}app:=gin.Default()//defineservicesstatusService:=&services.StatusService{App:app,}ss:=make(map[string]interface{})ss["auth"

json - 结构列表作为 json golang

这个问题在这里已经有了答案:json.Marshal(struct)returns"{}"(3个答案)关闭7年前。我试图在每个属性中返回一个带有列表的json,但我总是以空列表的形式获取列表。似乎我在结构内部有错误,但我找不到它。我有两个结构:typeCalendarDaystruct{dayint`json:"day"`weekdaystring`json:"weekday"`}typeCalendarYearstruct{January[]CalendarDay`json:"january"`February[]CalendarDay`json:"february"`March[]

go - 需要 *os.File 作为参数的测试函数

我想为波纹管函数编写一个测试,但我不明白我可以将什么作为参数发送给toCount,因为我不想打开/创建文件,我知道os.Stdin会起作用,但我认为你不能写入它。functoCount(f*os.File)int{input:=buffo.NewScanner(f)sum:=0;forinput.Scan(){sum++}returnsum} 最佳答案 您的toCount函数只需要一个io.Reader。如果将签名更改为functoCount(fio.Reader)int它可以接受*os.File和任何其他你想用来测试的阅读器。

json - 从 Go 函数返回整个结构

我有一个从GET函数返回的冗长的json键值对结构。类似于:typecontentstruct{field1string`json:"Language"`field2int`json:"Runtime"`field3time.Time`json:"StartTime"`field4time.Time`json:"EndTime"`field5int64`json:"ProgramId`field6string`json:"ProviderId"`field7string`json:"Title:`}我知道如何使用以下方法返回单个字段值:println(content.field1)但是

http - "foo"和 "bar"是什么意思,为什么人们喜欢用它们作为示例?

这个问题在这里已经有了答案:Whatistheoriginoffooandbar?[closed](2个答案)关闭6年前。在很多程序测试用例或示例用例中,我总是看到“bar”和“foo”,这两个词代表什么,为什么选择这两个词作为示例?

go - 隐藏一个全局函数

有没有办法在golang包中隐藏全局范围内的函数?在一些go文件中,我不希望用户能够调用BFunc...也就是说,我想包装它...//LetssaythispackageprovidesBFunc()//AndIhaveanaughtyuserwhowantstoimportit."github.com/a/bfunc"所以,在全局范围内的另一个go文件中,我可能会这样做:funcBFunc(){fmt.Print("hahaItrickedyou")}当我尝试这个时,我得到一个错误,有一个相同函数的先前声明,具体指的是.导入。我是否可以进行语法破解来阻止用户将bfunc.BFunc(

go - 解释函数声明的语法

请解释下面的语法,我从godoc中找到了下面的代码片段。我理解Cookie是函数名,name是它的参数,返回类型是(*Cookie,error),我无法理解的部分是(r*Request),这部分到底是什么意思。顺便说一句,我来自OOP背景。func(r*Request)Cookie(namestring)(*Cookie,error) 最佳答案 它被称为接收器。基本上,如果一个函数在它的名字(接收者)之前有一些东西,它现在被称为一个方法。这是将结构作为参数的好方法。我建议查看https://tour.golang.org/metho

python - 相当于golang中的itemgetter

我正在将一个程序从python转换为golang,我有一行获取嵌套列表中的第一个值:x_values=map(operator.itemgetter(0),self.coords)此命令将[[1,2],[2,3],[7,4]]转换为[1,2,7]。在go中有类似的东西吗? 最佳答案 Go中的等价物是for循环:packagemainimport("fmt")funcmain(){a:=make([][]int,3)a[0]=[]int{1,2}a[1]=[]int{2,3}a[2]=[]int{7,4}b:=make([]int,l

go - 如何在函数中传递指向结构的指针?

我想知道如何将*Type替换为?什么地址里面有结构?//mycode.gopackagemainimport"fmt"funcout(k*Type){fmt.Println(k)}funcmain(){typeDataIPstruct{Title,Descstring}Data:=DataIP{"Hello!","HelloGO!",}out(&Data)} 最佳答案 您需要在main()之外定义类型DataIP,该类型在包的范围内,而不仅仅是在main函数内:packagemainimport"fmt"typeDataIPstru